/*
 * Copyright (C) 2015 yixun All Rights Reserved.
 * 
 * PartnerInfoMapper.java
 */
package com.yixun.qfbao.mapper;

import com.yixun.qfbao.model.PartnerInfo;
import com.yixun.qfbao.model.dto.PartnerInfoDto;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;
/**
 * [文件名称]<br>
 * PartnerInfoMapper.java<br>
 * <br>
 * [文件描述]<br>
 * 合作机构 mapper<br>
 * <br>
 * [修改记录]<br>
 * 2015-10-13 15:32:11 创建 陶俊代码生成器<br>
 * 
 * @author 陶俊代码生成器
 * @version 1.00
 */
public interface PartnerInfoMapper {
    
	/**
	 * 新增
	 * @param partnerInfo 新增BEAN信息
	 * @return 操作行数
	 */
	public int add(PartnerInfo partnerInfo);
	
	
	/**
	 * 删除
	 * @param partnerInfoDto 满足删除的条件
	 * @return 操作行数
	 */
    public int del(PartnerInfoDto partnerInfoDto);
	/**
	 * 删除
	 * @param ids 待删除的唯一主键拼接的字符串,主键间以,隔开
	 * @return 操作行数
	 */
    public int dels(String ids);
    /**
     * 编辑
     * @param partnerInfo 需要编辑的BEAN信息
     */
    public int edit(PartnerInfo partnerInfo);
    /**
     * 编辑
     * @param partnerInfo 需要编辑的BEAN信息
     * @param ids 待编辑的唯一主键拼接的字符串,主键间以,隔开
     * @return 更新行数
     */
    public int edits(@Param("partnerInfoDto")PartnerInfo partnerInfo,@Param("ids")String ids);
    /**
     * 搜索总数
     * @param partnerInfoDto 搜索条件
     * @return 符合条件记录总数
     */
	public int count(PartnerInfoDto partnerInfoDto);
    /**
	 * 搜索 - 支持分页
	 * @param blackWhiteList blackWhiteList(搜索条件)
	 * @param beginNum 分页开始页不包含
	 * @param endNum 分页结束页不包含
	 * @return 分页数据
	 */
	public List<PartnerInfo> list(@Param("partnerInfoDto")PartnerInfoDto partnerInfoDto,@Param("beginNum")int beginNum,@Param("endNum")int endNum);
	/**
	 * 搜索总数
	 * @param partnerInfoDto 搜索条件
	 * @return 符合条件记录总数
	 */
	public int countByHigherId(PartnerInfoDto partnerInfoDto);
	/**
	 * 搜索 - 支持分页
	 * @param blackWhiteList blackWhiteList(搜索条件)
	 * @param beginNum 分页开始页不包含
	 * @param endNum 分页结束页不包含
	 * @return 分页数据
	 */
	public List<PartnerInfoDto> listByHigherId(@Param("partnerInfoDto")PartnerInfoDto partnerInfoDto,@Param("beginNum")int beginNum,@Param("endNum")int endNum);
	/**
	 * 搜索总数
	 * @param partnerInfoDto 搜索条件
	 * @return 符合条件记录总数
	 */
	public int myCount(PartnerInfoDto partnerInfoDto);
	/**
	 * 搜索 - 支持分页
	 * @param blackWhiteList blackWhiteList(搜索条件)
	 * @param beginNum 分页开始页不包含
	 * @param endNum 分页结束页不包含
	 * @return 分页数据
	 */
	public List<PartnerInfo> myList(@Param("partnerInfoDto")PartnerInfoDto partnerInfoDto,@Param("beginNum")int beginNum,@Param("endNum")int endNum);
	
	
	public int countList(@Param("partnerInfoDto")PartnerInfoDto partnerInfoDto);
   
    /**
	 * 搜索 
	 * @param partnerInfoDto blackWhiteList(搜索条件)
	 * @return 分页数据
	 */
	public List<PartnerInfo> selectListByDto(@Param("partnerInfoDto")PartnerInfoDto partnerInfoDto);

	/**
	 * 搜索所有数据,包含已删除的
	 * @param partnerInfoDto blackWhiteList(搜索条件)
	 * @return 分页数据
	 */
	List<PartnerInfo> selectWholeListByDto(@Param("partnerInfoDto")PartnerInfoDto partnerInfoDto);

    /**
	 * 搜索
	 * @param blackWhiteList blackWhiteList(搜索条件)
	 * @return 分页数据
	 */
	public List<PartnerInfo> searchListByDto(@Param("partnerInfoDto")PartnerInfoDto partnerInfoDto,@Param("beginNum")int beginNum,@Param("endNum")int endNum);
	
	/**
	 *  获取审核列表总数量
	 * @param entity 搜索条件
	 * @return 分页记录
	 */
	public int countSearchCheckListByDto(@Param("partnerInfoDto")PartnerInfoDto entity);
	 /**
	 * 搜索
	 * @param blackWhiteList blackWhiteList(搜索条件)
	 * @return 分页数据
	 */
	public List<PartnerInfo> searchCheckListByDto(@Param("partnerInfoDto")PartnerInfoDto partnerInfoDto,@Param("beginNum")int beginNum,@Param("endNum")int endNum);

    /**
	 * 搜索
	 * @param blackWhiteList blackWhiteList(搜索条件)
	 * @return 分页数据
	 */
	Integer searchListByDtoCount(@Param("partnerInfoDto")PartnerInfoDto partnerInfoDto);

    /**
	 * 搜索 - 支持分页
	 * @param blackWhiteList blackWhiteList(搜索条件)
	 * @return 分页数据
	 */
	PartnerInfo selectByDto(@Param("partnerInfoDto")PartnerInfoDto partnerInfoDto);
    /**
	 * 搜索 - 支持分页
	 * @param blackWhiteList blackWhiteList(搜索条件)
	 * @return 分页数据
	 */
	List<PartnerInfoDto> selectByDto2(@Param("partnerInfoDto")PartnerInfoDto partnerInfoDto);/**
	 * 搜索 - 支持分页
	 * @param blackWhiteList blackWhiteList(搜索条件)
	 * @return 分页数据
	 */
	List<PartnerInfoDto> selectByDto3(@Param("partnerInfoDto")PartnerInfoDto partnerInfoDto);
	
	/**
	 * @param id
	 * @return
	 * 根据id查询记录
	 */
	public PartnerInfo selectById(@Param("id")Long id);
	
	/**
	 * 	根据分销的人员ID获取当前人员信息，会包含对应总代公司的companyUuid
	 * @param id 根据主键搜索
	 * @return 一行记录
	 */
	public PartnerInfo selectByAgencyId(@Param("id")Long id);
	
	/**
	* 方法描述 : 公司下面所有的经纪人
	* 创建者：ThinkPad 
	* 项目名称： channel-basic
	* 类名： PartnerInfoMapper.java
	* 版本： v1.0
	* 创建时间： 2017年1月12日 上午10:55:39
	* @param companyId
	* @return Integer
	 */
	public Integer selectByCompany(@Param("companyId")Long companyId);
	
	/**
	 * 搜索
	 * @param blackWhiteList blackWhiteList(搜索条件)
	 * @return 分页数据
	 */
	public List<PartnerInfo> logining(@Param("partnerInfoDto")PartnerInfoDto partnerInfoDto);

	/**
	 * 手机号去重复检验
	 *
	 * @param partnerInfoDto
	 * @return
	 */
	List<PartnerInfo> checkRepeat(@Param("partnerInfoDto") PartnerInfoDto partnerInfoDto);

	/**
	 * 搜索
	 * @param blackWhiteList blackWhiteList(搜索条件)
	 * @return 分页数据
	 */
	public List<PartnerInfoDto> selectAgentList(@Param("partnerInfoDto")PartnerInfoDto partnerInfoDto);
	   /**
     * 搜索总数
     * @param partnerInfoDto 搜索条件
     * @return 符合条件记录总数
     */
	public int selectDtoCount(PartnerInfoDto partnerInfoDto);
    /**
	 * 搜索 - 支持分页
	 * @param blackWhiteList blackWhiteList(搜索条件)
	 * @param beginNum 分页开始页不包含
	 * @param endNum 分页结束页不包含
	 * @return 分页数据
	 */
	public List<PartnerInfoDto> selectDtolist(@Param("partnerInfoDto")PartnerInfoDto partnerInfoDto,@Param("beginNum")int beginNum,@Param("endNum")int endNum);

	List<PartnerInfoDto> selectRegister(@Param("partnerInfoDto")PartnerInfoDto partnerInfoDto);
	/**
	 * 按部门id删除人员
	 *@author 作者：李晓进
	 *@date 2017年10月16日上午11:56:26
	 *@param deptId 部门id
	 *@return
	 */
	public int delPartnerByDeptId(@Param("deptId")Long deptId);

	/**
	 *@description 部门合并
	 *@author sangtao
	 *@date 2017/12/14
	 *@param
	 **/
	int editParent(@Param("mergeId")Long mergeId,@Param("acceptId")Long acceptId);

    /**
     * 获取经纪人信息（含部门、组别）
     * @param partnerInfoDto
     * @return
     */
    List<PartnerInfoDto> selectStaffListByDto(@Param("partnerInfoDto")PartnerInfoDto partnerInfoDto);

    List<PartnerInfoDto> selectPrincipalListByDto(@Param("partnerInfoDto")PartnerInfoDto partnerInfoDto);

    List<PartnerInfoDto> selectOpenIdByAssign(@Param("premisesId") Long premiseId);

	/**
	 * 根据经济公司id获取相应人员
	 * @param partnerInfoDto
	 * @return
	 */
	List<PartnerInfoDto> selectPartnerByCompanyIds(PartnerInfoDto partnerInfoDto);

	/**
	 * 根据楼盘获取驻场人员
	 * @param premisesId
	 * @return
	 */
	List<PartnerInfoDto> selectCaseMemberByPremises(@Param("premisesId") Long premisesId);

	/**
	 * 登录查询
	 *
	 * @param partnerInfoDto
	 * @return
	 */
	PartnerInfo getPartnerInfoForLogin(@Param("partnerInfoDto") PartnerInfoDto partnerInfoDto);

	List<PartnerInfo> listPartnerInfoForLogin(@Param("partnerInfoDto") PartnerInfoDto partnerInfoDto);

	/**
	 * 根据部门获取人员
	 *
	 * @param deptIds
	 * @return
	 */
	List<PartnerInfoDto> listPartnerInfoByDeptIds(@Param("deptIds") List<Long> deptIds);

	/**
	 * 根据部门获取全部人员(包含删除及未启用人员)
	 *
	 * @param deptIds
	 * @return
	 */
	List<PartnerInfoDto> listAllPartnerInfoByDeptIds(@Param("deptIds") List<Long> deptIds);

	/**
	 * 管理员转移
	 *
	 * @param pi
	 * @return
	 */
    int adminTransfer(@Param("partnerInfoDto") PartnerInfoDto pi);


	/** 用户信息子表查询导致慢sql优化
	 *  分开两个方法查询，首先查主表，主表没有再去子表中查询
	 *
	 * */

	PartnerInfo getPartnerInfo(@Param("partnerInfoDto") PartnerInfoDto partnerInfoDto);

	List<PartnerInfo> listPartnerInfo(@Param("partnerInfoDto") PartnerInfoDto partnerInfoDto);

	List<PartnerInfo> listPartnerInfoByAddition(@Param("partnerInfoDto") PartnerInfoDto partnerInfoDto);

	/** 检查重复的两个接口 */
	List<PartnerInfo> listPartnerInfoByAdditionCheckRepeat(@Param("partnerInfoDto") PartnerInfoDto partnerInfoDto);

	List<PartnerInfo> listPartnerInfoByCheckRepeat(@Param("partnerInfoDto") PartnerInfoDto partnerInfoDto);
	
	/**
	 *     根据员工ID查询员工名称+wxopenid + 公司，组别，部门信息
	 * @param staffIdList
	 * @return
	 */
	List<Map<String, Object>> getPartenerInfo(List<Object> staffIdList);
	
	/**
	 *  获取员工对应的驻场楼盘信息
	 * @param params
	 * @return
	 */
	List<Map<String, Object>> getPremisesAndCaseMemberByStaffId(Map<String, Object> params);
	
	/**
	 *   根据微信openId，判断是否要进行隐藏号码展示
	 * @param wxOpenIds
	 * @return
	 */
	List<String> getPhoneHideByOpenId(List<String> wxOpenIds);
	
	/**
	 *  根据员工的手机号以及公司UUID获取所有员工的信息
	 * @return
	 */
	List<Map<String, Object>> getAllPartnerInfoByPhoneAndCompany(Map<String, Object> phoneAndCompanyInfo);
	
	/**
	 * 
	 * @param params
	 * @return
	 */
	int updateOpenIdByCompanyIdAndUnionId(Map<String, Object> params);

	/**
	 *   根据微信openId，判断是否要进行隐藏号码展示
	 * @param wxOpenIds
	 * @return
	 */
	List<String> getHideAgentPhoneOpenIds(List<String> wxOpenIds);

}
